﻿#define _CRT_SECURE_NO_WARNINGS
//编写代码实现：求⼀个整数存储在内存中的⼆进制中1的个数。
#include <stdio.h>
int main()
{
	int num;
	int count = 0;//计数
	scanf("%d", &num);
	while (num)
	{
		if (num % 2 == 1)
			count++;
		num = num / 2;
	}
	printf("⼆进制中1的个数 = %d\n", count);
	return 0;
}

//⽅法2：
//#include <stdio.h>
//int main()
//{
//	int num = -1;
//	int i = 0;
//	int count = 0;//计数
//	for (i = 0; i < 32; i++)
//	{
//		if (num & (1 << i))
//			count++;
//	}
//	printf("⼆进制中1的个数 = %d\n", count);
//	return 0;
//}
////思考还能不能更加优化，这⾥必须循环32次的。
////⽅法3：
//#include <stdio.h>
//int main()
//{
//	int num = -1;
//	int i = 0;
//	int count = 0;//计数
//	while (num)
//	{
//		count++;
//		num = num & (num - 1);
//	}
//	printf("⼆进制中1的个数 = %d\n", count);
//	return 0;
//}